#ifndef _SUBMANAGER_H
#define _SUBMANAGER_H

#include <allegro.h>
#include <list>
#include "../entities/Entity.h"

/*
 * This class should represent a common interface for all submanagers.
 */
class SubManager{
    public:
        SubManager();
        /*
         * Add an entity to this manager
         */
        void addEntity(Entity *);
        
        /*
         * Remove an entity from the manager, without
         * deleting the object in question
         */
        void removeEntity(Entity *);
       
        /*
         * Get the number of Entities tracked by this Manager
         */
        int getCount();

        /*
         * This is an opportunity for the implementing 
         * submanager to manipulate its' entities
         * (gravity, age, etc)
         */
        virtual void tick();

        /*
         * Draw all entities to the specified bitmap
         */
        void drawAll(BITMAP *);
    private:
        std::list<Entity *> mEntities;
};

#endif
